package com.zmn.oms.model.dto.order.proxy;

import com.zmn.oms.common.dto.OmsBaseOperator;
import com.zmn.oms.model.dto.product.OrderProductDTO;
import lombok.Data;
import lombok.ToString;

import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
 * 类描述：新单订单
 *
 * @author liuying
 * @date 2019/02/16 17:09
 */
@Data
@ToString(callSuper = true)
public class CreateOrderDTO extends OmsBaseOperator {

    /**
     * 城市id
     */
    @NotNull(message = "城市不能为空")
    private Integer cityId;

    /**
     * 源头工单id
     */
    private Long originalId;

    /**
     * 返修订单ID
     */
    private Long reworkId;

    /**
     * 预约时间
     */
    private Date dutyTime;

    /**
     * 联系人
     */
    private String contactName;

    /**
     * 性别：1 男; 2 女; 3 保密
     */
    private Integer gender;

    /**
     * 街道
     */
    private String street;

    /**
     * 客户地址具体门牌号
     */
    private String address;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 客户电话1
     */
    private String telephone;

    /**
     * 客户电话2
     */
    private String telephone2;

    /**
     * 客户电话3
     */
    private String telephone3;

    /**
     * 订单客户备注
     */
    private String remark;

    /**
     * 产品列表
     */
    private List<OrderProductDTO> orderProductList;

    /**
     * 渠道ID
     */
    private Integer channelId;

    /**
     * 经度
     */
    private Double longitude;

    /**
     * 纬度
     */
    private Double latitude;

    /**
     * 外部订单ID
     */
    private String outerId;

    /**
     * 外部扩展数据
     */
    private String outerData;

    /**
     * 扩展渠道数据，用于协助完成同步等业务逻辑，各渠道可自由定义格式
     */
    private String extOuterData;

    /**
     * 渠道扩展订单号（渠道第二业务订单号）
     */
    private String extOuterId;

    /**
     * 渠道扩展订单号（渠道第二业务子订单号）
     */
    private String extOuterSubId;

    /**
     * 标识该该订单只收渠道预付款（渠道结算）
     */
    private Integer channelPrepayOnly;

    /**
     * 订单优惠信息
     */
    private List<OrderDiscountDTO> orderDiscountList;

    /**
     * 工单录入方式：1后台人工录入、2微信/H5、 3接口(114,号百,360等)
     */
    private Integer inputType;

    // 金额
    /**
     * 订单金额
     */
    private Integer originalAmount;

    /**
     * 应收总额
     */
    private Integer totalAmount;

    /**
     * 渠道预付款
     */
    private Integer channelPrepayAmount;

    /**
     * 渠道预付款支付状态：1未支付，2已支付，3退款
     */
    private Integer channelPrepayStatus;

    /**
     * 预付款支付时间
     */
    private Date prepayTime;

    /**
     * 是否禁止弃单 1：否，可以弃单  2：不允许弃单
     */
    private Integer disableDiscard;

    /**
     * 外部用户ID (原cid)
     */
    private String outerUserId;

    /**
     * proxy接口进来的订单的来源类型，GateTypeConsts
     */
    private Integer proxyFromType;

    /**
     * 地址线索信息，主要用于分类信息中的地址信息提取
     */
    private String addressClues;

    /**
     * 产品线索信息，主要用于分类信息中的产品信息提取
     */
    private String productClues;

    /**
     * 订单业务类型：1保外业务（C），2保内业务（F），3工程业务（B），为空时表示非保内订单
     */
    private Integer bizType;

    /**
     * 防刷单检查  2020.09.09 by lhl
     *  1：false  2：true  为空时，默认为2
     */
    private Integer clickFarmingCheck;

    /**
     * 是否是要客订单。lhl-2020.09.07
     * 2:是  1:否
     */
    private Integer vvip;

    /**
     * 厂商单标志：厂商单传固定值：2；非厂商单可不传 lhl-2020.12.02
     */
    private Integer factory;

    /**
     * 厂商产品ID，当factory字段的值为2时，该字段有效且必填
     */
    private String facProductId;

    /**
     * 登录手机号(用于第三方平台的登录用户) lhl-2020.12.17
     */
    private String loginPhone;

    /**
     * 渠道订单线索ID  lhl-2021.01.04
     */
    private Long orderClueId;

    /**
     * 来源渠道id  xwb-2021.01.18
     */
    private Integer sourceChannelId;

    /**
     * 外部店铺ID，目前只用于口碑和美团的核销
     */
    private String externalShopId;

    /**
     * 仅用于易聊（EasyLiao） lhl-2022.10.13
     */
    private String requestId;
}
